﻿// MT256




using Little.Soldier.SWIFT;
using Little.Soldier.SWIFT.Definition;
using System.Collections.Generic;
using System.ComponentModel;

namespace Little.Soldier.SWIFT.Messages.Category2
{
  public class MT256 : SwiftMessage
  {
    private static SwiftMessageDefinition MessageDefinition;
    private static SwiftTagSequenceDefinition U0002;
    private static SwiftTagDefinition U0003;
    private static SwiftTagSubItemDefinition U0004;
    private static SwiftTagDefinition U0005;
    private static SwiftTagSubItemDefinition U0006;
    private static SwiftTagSequenceDefinition U0007;
    private static SwiftTagDefinition U0008;
    private static SwiftTagSubItemDefinition U000E;
    private static SwiftTagDefinition U000F;
    private static SwiftTagSubItemDefinition U0010;
    private static SwiftTagDefinition U0011;
    private static SwiftTagSubItemDefinition U0012;
    private static SwiftTagDefinition U0013;
    private static SwiftTagSubItemDefinition U0014;
    private static SwiftTagDefinition U0015;
    private static SwiftTagSubItemDefinition U0016;
    private static SwiftTagSubItemDefinition U0017;
    private static SwiftTagSubItemDefinition U0018;
    private static SwiftTagDefinition U0019;
    private static SwiftTagSubItemDefinition U001A;
    private static SwiftTagDefinition U001B;
    private static SwiftTagSubItemDefinition U001C;
    private static SwiftTagDefinition U001D;
    private static SwiftTagSubItemDefinition U001E;
    private static SwiftTagSubItemDefinition U001F;
    private static SwiftTagDefinition U007F;
    private static SwiftTagSubItemDefinition U0080;
    private static SwiftTagSubItemDefinition U0081;
    private static SwiftTagDefinition U0082;
    private static SwiftTagSubItemDefinition U0083;
    private static SwiftTagSubItemDefinition U0084;
    private static SwiftTagSequenceDefinition U0086;
    private static SwiftTagDefinition U0087;
    private static SwiftTagSubItemDefinition U0088;
    private static SwiftTagSubItemDefinition U0089;
    private static SwiftTagSubItemDefinition U008A;
    private static SwiftTagDefinition U008B;
    private static SwiftTagSubItemDefinition U008C;
    private static SwiftTagDefinition U008D;
    private static SwiftTagSubItemDefinition U008E;
    private static SwiftTagDefinition U008F;
    private static SwiftTagSubItemDefinition U0090;
    private static SwiftTagSubItemDefinition U0091;
    private static SwiftTagDefinition U0092;
    private static SwiftTagSubItemDefinition U0093;
    private static SwiftTagSubItemDefinition U0094;
    private static SwiftTagDefinition U0095;
    private static SwiftTagSubItemDefinition U0096;
    private static SwiftTagSubItemDefinition U0097;
    private static SwiftTagChoiceDefinition U0098;
    private static SwiftTagDefinition U0099;
    private static SwiftTagSubItemDefinition U009A;
    private static SwiftTagSubItemDefinition U009B;
    private static SwiftTagDefinition U009C;
    private static SwiftTagSubItemDefinition U009D;
    private static SwiftTagDefinition U009E;
    private static SwiftTagSubItemDefinition U009F;
    private static SwiftTagSubItemDefinition U0001U0002;
    private static SwiftTagDefinition U0002U0002;
    private static SwiftTagSubItemDefinition U0003U0002;
    private static SwiftTagSubItemDefinition U0004U0002;

    [Description("Common Elements")]
    public MT256.SequenceAClass SequenceA
    {
      get
      {
        return new MT256.SequenceAClass((SwiftElement) this, 0, false);
      }
    }

    [Description("Cheque Details")]
    public MT256.SequenceBClass[] SequenceB
    {
      get
      {
        int index = -1;
        List<MT256.SequenceBClass> list = new List<MT256.SequenceBClass>();
        int count;
        do
        {
          ++index;
          MT256.SequenceBClass sequenceBclass = new MT256.SequenceBClass((SwiftElement) this, index, false);
          count = this.ListTags((SwiftElement) sequenceBclass).Count;
          if (count > 0)
            list.Add(sequenceBclass);
        }
        while (count > 0);
        return list.ToArray();
      }
    }

    [Description("Settlement Details")]
    public MT256.SequenceCClass SequenceC
    {
      get
      {
        return new MT256.SequenceCClass((SwiftElement) this, 0, false);
      }
    }

    public MT256()
      : base(true)
    {
    }

    public MT256(SwiftMessage message)
      : base(message)
    {
    }

    public MT256.SequenceBClass AddSequenceB()
    {
      return new MT256.SequenceBClass((SwiftElement) this, this.SequenceB.Length, true);
    }

    public void RemoveSequenceB(MT256.SequenceBClass sequence)
    {
      foreach (SwiftTag tag in this.ListTags((SwiftElement) sequence))
        this.RemoveTag(tag);
    }

    internal override SwiftMessageDefinition MsgDefinition()
    {
      return MT256.MessageDefinition;
    }

    protected override void InitSwiftMessageDefinition()
    {
      MT256.MessageDefinition = new SwiftMessageDefinition("MT256", "SWIFT CATEGORY2 MT256");
      MT256.U0002 = new SwiftTagSequenceDefinition("SequenceA", "Common Elements");
      MT256.U0003 = new SwiftTagDefinition("SendersReference_A_20", "Sender’s Reference");
      MT256.U0003.TagName = ":20:";
      MT256.U0004 = new SwiftTagSubItemDefinition("Reference", "Reference Number");
      MT256.U0003.Elements.Add((SwiftDefinitionElement) MT256.U0004);
      MT256.U0002.Elements.Add((SwiftDefinitionElement) MT256.U0003);
      MT256.U0005 = new SwiftTagDefinition("RelatedMessageReference_A_21", "Related Message Reference");
      MT256.U0005.TagName = ":21:";
      MT256.U0005.Mandatory = false;
      MT256.U0006 = new SwiftTagSubItemDefinition("Reference", "Reference Number");
      MT256.U0005.Elements.Add((SwiftDefinitionElement) MT256.U0006);
      MT256.U0002.Elements.Add((SwiftDefinitionElement) MT256.U0005);
      MT256.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT256.U0002);
      MT256.U0007 = new SwiftTagSequenceDefinition("SequenceB", "Cheque Details");
      MT256.U0007.Multiple = true;
      MT256.U0008 = new SwiftTagDefinition("TransactionReferenceNumber_B_44A", "Transaction Reference Number");
      MT256.U0008.TagName = ":44A:";
      MT256.U000E = new SwiftTagSubItemDefinition("TransactionReferenceNumber", "Transaction Reference Number");
      MT256.U0008.Elements.Add((SwiftDefinitionElement) MT256.U000E);
      MT256.U0007.Elements.Add((SwiftDefinitionElement) MT256.U0008);
      MT256.U000F = new SwiftTagDefinition("RelatedMessageReference_B_21", "Related Message Reference");
      MT256.U000F.TagName = ":21:";
      MT256.U000F.Mandatory = false;
      MT256.U0010 = new SwiftTagSubItemDefinition("Reference", "Reference Number");
      MT256.U000F.Elements.Add((SwiftDefinitionElement) MT256.U0010);
      MT256.U0007.Elements.Add((SwiftDefinitionElement) MT256.U000F);
      MT256.U0011 = new SwiftTagDefinition("ChequeNumber_B_21D", "Cheque Number");
      MT256.U0011.TagName = ":21D:";
      MT256.U0011.Mandatory = false;
      MT256.U0012 = new SwiftTagSubItemDefinition("ChequeNumber", "Cheque Number");
      MT256.U0011.Elements.Add((SwiftDefinitionElement) MT256.U0012);
      MT256.U0007.Elements.Add((SwiftDefinitionElement) MT256.U0011);
      MT256.U0013 = new SwiftTagDefinition("ChequeReferenceNumber_B_21E", "Cheque Reference Number");
      MT256.U0013.TagName = ":21E:";
      MT256.U0013.Mandatory = false;
      MT256.U0014 = new SwiftTagSubItemDefinition("ChequeReferenceNumber", "Cheque Reference Number");
      MT256.U0013.Elements.Add((SwiftDefinitionElement) MT256.U0014);
      MT256.U0007.Elements.Add((SwiftDefinitionElement) MT256.U0013);
      MT256.U0015 = new SwiftTagDefinition("ReasonForNonPaymentDishonour_B_23E", "Reason for Non-Payment/Dishonour");
      MT256.U0015.TagName = ":23E:";
      MT256.U0016 = new SwiftTagSubItemDefinition("Code", "Code");
      MT256.U0015.Elements.Add((SwiftDefinitionElement) MT256.U0016);
      MT256.U0017 = new SwiftTagSubItemDefinition("Narrative", "Narrative");
      MT256.U0017.Mandatory = false;
      MT256.U0018 = new SwiftTagSubItemDefinition("Narrative_1", "Narrative");
      MT256.U0017.Elements.Add((SwiftDefinitionElement) MT256.U0018);
      MT256.U0015.Elements.Add((SwiftDefinitionElement) MT256.U0017);
      MT256.U0007.Elements.Add((SwiftDefinitionElement) MT256.U0015);
      MT256.U0019 = new SwiftTagDefinition("ChequeAmount_B_32J", "Cheque Amount");
      MT256.U0019.TagName = ":32J:";
      MT256.U001A = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT256.U0019.Elements.Add((SwiftDefinitionElement) MT256.U001A);
      MT256.U0007.Elements.Add((SwiftDefinitionElement) MT256.U0019);
      MT256.U001B = new SwiftTagDefinition("InterestRate_B_37J", "Interest Rate");
      MT256.U001B.TagName = ":37J:";
      MT256.U001B.Mandatory = false;
      MT256.U001C = new SwiftTagSubItemDefinition("Rate", "Rate");
      MT256.U001B.Elements.Add((SwiftDefinitionElement) MT256.U001C);
      MT256.U0007.Elements.Add((SwiftDefinitionElement) MT256.U001B);
      MT256.U001D = new SwiftTagDefinition("InterestCharges_B_71G", "Interest Charges");
      MT256.U001D.TagName = ":71G:";
      MT256.U001D.Mandatory = false;
      MT256.U001E = new SwiftTagSubItemDefinition("Currency", "Currency Code");
      MT256.U001D.Elements.Add((SwiftDefinitionElement) MT256.U001E);
      MT256.U001F = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT256.U001D.Elements.Add((SwiftDefinitionElement) MT256.U001F);
      MT256.U0007.Elements.Add((SwiftDefinitionElement) MT256.U001D);
      MT256.U007F = new SwiftTagDefinition("SendersCharges_B_71F", "Sender’s Charges");
      MT256.U007F.TagName = ":71F:";
      MT256.U007F.Mandatory = false;
      MT256.U0080 = new SwiftTagSubItemDefinition("Currency", "Currency Code");
      MT256.U007F.Elements.Add((SwiftDefinitionElement) MT256.U0080);
      MT256.U0081 = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT256.U007F.Elements.Add((SwiftDefinitionElement) MT256.U0081);
      MT256.U0007.Elements.Add((SwiftDefinitionElement) MT256.U007F);
      MT256.U0082 = new SwiftTagDefinition("IssuersFinancialInstitutionCharges_B_71H", "Issuer’s Financial Institution Charges");
      MT256.U0082.TagName = ":71H:";
      MT256.U0082.Mandatory = false;
      MT256.U0083 = new SwiftTagSubItemDefinition("Currency", "Currency Code");
      MT256.U0082.Elements.Add((SwiftDefinitionElement) MT256.U0083);
      MT256.U0084 = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT256.U0082.Elements.Add((SwiftDefinitionElement) MT256.U0084);
      MT256.U0007.Elements.Add((SwiftDefinitionElement) MT256.U0082);
      MT256.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT256.U0007);
      MT256.U0086 = new SwiftTagSequenceDefinition("SequenceC", "Settlement Details");
      MT256.U0087 = new SwiftTagDefinition("ValueDateCurrencyCodeAndTotalAmountClaimed_C_32A", "Value Date, Currency Code and Sum of Settlement");
      MT256.U0087.TagName = ":32A:";
      MT256.U0088 = new SwiftTagSubItemDefinition("Date", "Date");
      MT256.U0087.Elements.Add((SwiftDefinitionElement) MT256.U0088);
      MT256.U0089 = new SwiftTagSubItemDefinition("Currency", "Currency Code");
      MT256.U0087.Elements.Add((SwiftDefinitionElement) MT256.U0089);
      MT256.U008A = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT256.U0087.Elements.Add((SwiftDefinitionElement) MT256.U008A);
      MT256.U0086.Elements.Add((SwiftDefinitionElement) MT256.U0087);
      MT256.U008B = new SwiftTagDefinition("OriginalValueDate_C_30", "Original Value Date");
      MT256.U008B.TagName = ":30:";
      MT256.U008B.Mandatory = false;
      MT256.U008C = new SwiftTagSubItemDefinition("Date", "Date");
      MT256.U008B.Elements.Add((SwiftDefinitionElement) MT256.U008C);
      MT256.U0086.Elements.Add((SwiftDefinitionElement) MT256.U008B);
      MT256.U008D = new SwiftTagDefinition("TotalChequeAmount_C_19", "Total Cheque Amount");
      MT256.U008D.TagName = ":19:";
      MT256.U008D.Mandatory = false;
      MT256.U008E = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT256.U008D.Elements.Add((SwiftDefinitionElement) MT256.U008E);
      MT256.U0086.Elements.Add((SwiftDefinitionElement) MT256.U008D);
      MT256.U008F = new SwiftTagDefinition("SumOfInterestCharges_C_71J", "Sum of Interest Charges");
      MT256.U008F.TagName = ":71J:";
      MT256.U008F.Mandatory = false;
      MT256.U0090 = new SwiftTagSubItemDefinition("Currency", "Currency Code");
      MT256.U008F.Elements.Add((SwiftDefinitionElement) MT256.U0090);
      MT256.U0091 = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT256.U008F.Elements.Add((SwiftDefinitionElement) MT256.U0091);
      MT256.U0086.Elements.Add((SwiftDefinitionElement) MT256.U008F);
      MT256.U0092 = new SwiftTagDefinition("SumOfSendersCharges_C_71L", "Sum of Sender’s Charges");
      MT256.U0092.TagName = ":71L:";
      MT256.U0092.Mandatory = false;
      MT256.U0093 = new SwiftTagSubItemDefinition("Currency", "Currency Code");
      MT256.U0092.Elements.Add((SwiftDefinitionElement) MT256.U0093);
      MT256.U0094 = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT256.U0092.Elements.Add((SwiftDefinitionElement) MT256.U0094);
      MT256.U0086.Elements.Add((SwiftDefinitionElement) MT256.U0092);
      MT256.U0095 = new SwiftTagDefinition("SumOfIssuersFinancialInstitutionCharges_C_71K", "Sum of Issuer’s Financial Institution Charges");
      MT256.U0095.TagName = ":71K:";
      MT256.U0095.Mandatory = false;
      MT256.U0096 = new SwiftTagSubItemDefinition("Currency", "Currency Code");
      MT256.U0095.Elements.Add((SwiftDefinitionElement) MT256.U0096);
      MT256.U0097 = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT256.U0095.Elements.Add((SwiftDefinitionElement) MT256.U0097);
      MT256.U0086.Elements.Add((SwiftDefinitionElement) MT256.U0095);
      MT256.U0098 = new SwiftTagChoiceDefinition("Choice", "");
      MT256.U0098.Mandatory = false;
      MT256.U0098.Multiple = true;
      MT256.U0099 = new SwiftTagDefinition("AccountWithInstitution_C_57A", "Account With Institution");
      MT256.U0099.TagName = ":57A:";
      MT256.U009A = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT256.U009A.Mandatory = false;
      MT256.U0099.Elements.Add((SwiftDefinitionElement) MT256.U009A);
      MT256.U009B = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT256.U0099.Elements.Add((SwiftDefinitionElement) MT256.U009B);
      MT256.U0098.Elements.Add((SwiftDefinitionElement) MT256.U0099);
      MT256.U009C = new SwiftTagDefinition("AccountWithInstitution_C_57C", "Account With Institution");
      MT256.U009C.TagName = ":57C:/";
      MT256.U009D = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT256.U009C.Elements.Add((SwiftDefinitionElement) MT256.U009D);
      MT256.U0098.Elements.Add((SwiftDefinitionElement) MT256.U009C);
      MT256.U009E = new SwiftTagDefinition("AccountWithInstitution_C_57D", "Account With Institution");
      MT256.U009E.TagName = ":57D:";
      MT256.U009F = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT256.U009F.Mandatory = false;
      MT256.U009E.Elements.Add((SwiftDefinitionElement) MT256.U009F);
      MT256.U0001U0002 = new SwiftTagSubItemDefinition("NameAndAddress", "Name And Address");
      MT256.U009E.Elements.Add((SwiftDefinitionElement) MT256.U0001U0002);
      MT256.U0098.Elements.Add((SwiftDefinitionElement) MT256.U009E);
      MT256.U0086.Elements.Add((SwiftDefinitionElement) MT256.U0098);
      MT256.U0002U0002 = new SwiftTagDefinition("BeneficiaryInstitutionsAccount_C_58B", "Beneficiary Institutions Account");
      MT256.U0002U0002.TagName = ":58B:";
      MT256.U0002U0002.Mandatory = false;
      MT256.U0003U0002 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT256.U0003U0002.Mandatory = false;
      MT256.U0002U0002.Elements.Add((SwiftDefinitionElement) MT256.U0003U0002);
      MT256.U0004U0002 = new SwiftTagSubItemDefinition("Location", "Location");
      MT256.U0004U0002.Mandatory = false;
      MT256.U0002U0002.Elements.Add((SwiftDefinitionElement) MT256.U0004U0002);
      MT256.U0086.Elements.Add((SwiftDefinitionElement) MT256.U0002U0002);
      MT256.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT256.U0086);
    }

    public class SequenceAClass : SwiftTagSequence
    {
      internal override SwiftDefinitionElement Definition
      {
        get
        {
          return (SwiftDefinitionElement) MT256.U0002;
        }
      }

      [Description("Sender’s Reference")]
      public Tag20 SendersReference_A_20
      {
        get
        {
          return new Tag20((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0003);
        }
      }

      [Description("Sender’s Reference")]
      public Tag20 Tag20_SendersReference_A
      {
        get
        {
          return this.SendersReference_A_20;
        }
      }

      [Description("Related Message Reference")]
      public Tag21 RelatedMessageReference_A_21
      {
        get
        {
          return new Tag21((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0005);
        }
      }

      [Description("Related Message Reference")]
      public Tag21 Tag21_RelatedMessageReference_A
      {
        get
        {
          return this.RelatedMessageReference_A_21;
        }
      }

      internal SequenceAClass(SwiftElement parent, int index, bool createTags)
        : base(parent, index, createTags)
      {
      }
    }

    public class SequenceBClass : SwiftTagSequence
    {
      internal override SwiftDefinitionElement Definition
      {
        get
        {
          return (SwiftDefinitionElement) MT256.U0007;
        }
      }

      [Description("Transaction Reference Number")]
      public Tag44A TransactionReferenceNumber_B_44A
      {
        get
        {
          return new Tag44A((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0008);
        }
      }

      [Description("Transaction Reference Number")]
      public Tag44A Tag44A_TransactionReferenceNumber_B
      {
        get
        {
          return this.TransactionReferenceNumber_B_44A;
        }
      }

      [Description("Related Message Reference")]
      public Tag21 RelatedMessageReference_B_21
      {
        get
        {
          return new Tag21((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U000F);
        }
      }

      [Description("Related Message Reference")]
      public Tag21 Tag21_RelatedMessageReference_B
      {
        get
        {
          return this.RelatedMessageReference_B_21;
        }
      }

      [Description("Cheque Number")]
      public Tag21D ChequeNumber_B_21D
      {
        get
        {
          return new Tag21D((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0011);
        }
      }

      [Description("Cheque Number")]
      public Tag21D Tag21D_ChequeNumber_B
      {
        get
        {
          return this.ChequeNumber_B_21D;
        }
      }

      [Description("Cheque Reference Number")]
      public Tag21E ChequeReferenceNumber_B_21E
      {
        get
        {
          return new Tag21E((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0013);
        }
      }

      [Description("Cheque Reference Number")]
      public Tag21E Tag21E_ChequeReferenceNumber_B
      {
        get
        {
          return this.ChequeReferenceNumber_B_21E;
        }
      }

      [Description("Reason for Non-Payment/Dishonour")]
      public MT256.SequenceBClass.Tag23E ReasonForNonPaymentDishonour_B_23E
      {
        get
        {
          return new MT256.SequenceBClass.Tag23E((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0015);
        }
      }

      [Description("Reason for Non-Payment/Dishonour")]
      public MT256.SequenceBClass.Tag23E Tag23E_ReasonForNonPaymentDishonour_B
      {
        get
        {
          return this.ReasonForNonPaymentDishonour_B_23E;
        }
      }

      [Description("Cheque Amount")]
      public Tag32J ChequeAmount_B_32J
      {
        get
        {
          return new Tag32J((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0019);
        }
      }

      [Description("Cheque Amount")]
      public Tag32J Tag32J_ChequeAmount_B
      {
        get
        {
          return this.ChequeAmount_B_32J;
        }
      }

      [Description("Interest Rate")]
      public Tag37J InterestRate_B_37J
      {
        get
        {
          return new Tag37J((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U001B);
        }
      }

      [Description("Interest Rate")]
      public Tag37J Tag37J_InterestRate_B
      {
        get
        {
          return this.InterestRate_B_37J;
        }
      }

      [Description("Interest Charges")]
      public Tag71G InterestCharges_B_71G
      {
        get
        {
          return new Tag71G((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U001D);
        }
      }

      [Description("Interest Charges")]
      public Tag71G Tag71G_InterestCharges_B
      {
        get
        {
          return this.InterestCharges_B_71G;
        }
      }

      [Description("Sender’s Charges")]
      public Tag71F SendersCharges_B_71F
      {
        get
        {
          return new Tag71F((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U007F);
        }
      }

      [Description("Sender’s Charges")]
      public Tag71F Tag71F_SendersCharges_B
      {
        get
        {
          return this.SendersCharges_B_71F;
        }
      }

      [Description("Issuer’s Financial Institution Charges")]
      public Tag71H IssuersFinancialInstitutionCharges_B_71H
      {
        get
        {
          return new Tag71H((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0082);
        }
      }

      [Description("Issuer’s Financial Institution Charges")]
      public Tag71H Tag71H_IssuersFinancialInstitutionCharges_B
      {
        get
        {
          return this.IssuersFinancialInstitutionCharges_B_71H;
        }
      }

      internal SequenceBClass(SwiftElement parent, int index, bool createTags)
        : base(parent, index, createTags)
      {
      }

      public class Tag23E : SwiftTagWrapper
      {
        public string Value
        {
          get
          {
            return this.GetValue();
          }
          set
          {
            this.SetValue("23E", value);
          }
        }

        internal Tag23E(SwiftElement parent, int index, SwiftDefinitionElement definition)
          : base(parent, index, definition)
        {
        }
      }
    }

    public class SequenceCClass : SwiftTagSequence
    {
      internal override SwiftDefinitionElement Definition
      {
        get
        {
          return (SwiftDefinitionElement) MT256.U0086;
        }
      }

      [Description("Value Date, Currency Code and Sum of Settlement")]
      public Tag32A ValueDateCurrencyCodeAndTotalAmountClaimed_C_32A
      {
        get
        {
          return new Tag32A((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0087);
        }
      }

      [Description("Value Date, Currency Code and Sum of Settlement")]
      public Tag32A Tag32A_ValueDateCurrencyCodeAndTotalAmountClaimed_C
      {
        get
        {
          return this.ValueDateCurrencyCodeAndTotalAmountClaimed_C_32A;
        }
      }

      [Description("Original Value Date")]
      public Tag30 OriginalValueDate_C_30
      {
        get
        {
          return new Tag30((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U008B);
        }
      }

      [Description("Original Value Date")]
      public Tag30 Tag30_OriginalValueDate_C
      {
        get
        {
          return this.OriginalValueDate_C_30;
        }
      }

      [Description("Total Cheque Amount")]
      public Tag19 TotalChequeAmount_C_19
      {
        get
        {
          return new Tag19((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U008D);
        }
      }

      [Description("Total Cheque Amount")]
      public Tag19 Tag19_TotalChequeAmount_C
      {
        get
        {
          return this.TotalChequeAmount_C_19;
        }
      }

      [Description("Sum of Interest Charges")]
      public Tag71J SumOfInterestCharges_C_71J
      {
        get
        {
          return new Tag71J((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U008F);
        }
      }

      [Description("Sum of Interest Charges")]
      public Tag71J Tag71J_SumOfInterestCharges_C
      {
        get
        {
          return this.SumOfInterestCharges_C_71J;
        }
      }

      [Description("Sum of Sender’s Charges")]
      public Tag71L SumOfSendersCharges_C_71L
      {
        get
        {
          return new Tag71L((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0092);
        }
      }

      [Description("Sum of Sender’s Charges")]
      public Tag71L Tag71L_SumOfSendersCharges_C
      {
        get
        {
          return this.SumOfSendersCharges_C_71L;
        }
      }

      [Description("Sum of Issuer’s Financial Institution Charges")]
      public Tag71K SumOfIssuersFinancialInstitutionCharges_C_71K
      {
        get
        {
          return new Tag71K((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0095);
        }
      }

      [Description("Sum of Issuer’s Financial Institution Charges")]
      public Tag71K Tag71K_SumOfIssuersFinancialInstitutionCharges_C
      {
        get
        {
          return this.SumOfIssuersFinancialInstitutionCharges_C_71K;
        }
      }

      [Description("Account With Institution")]
      public Tag57A AccountWithInstitution_C_57A
      {
        get
        {
          return new Tag57A((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0099);
        }
      }

      [Description("Account With Institution")]
      public Tag57A Tag57A_AccountWithInstitution_C
      {
        get
        {
          return this.AccountWithInstitution_C_57A;
        }
      }

      [Description("Account With Institution")]
      public MT256.SequenceCClass.Tag57C AccountWithInstitution_C_57C
      {
        get
        {
          return new MT256.SequenceCClass.Tag57C((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U009C);
        }
      }

      [Description("Account With Institution")]
      public MT256.SequenceCClass.Tag57C Tag57C_AccountWithInstitution_C
      {
        get
        {
          return this.AccountWithInstitution_C_57C;
        }
      }

      [Description("Account With Institution")]
      public Tag57D AccountWithInstitution_C_57D
      {
        get
        {
          return new Tag57D((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U009E);
        }
      }

      [Description("Account With Institution")]
      public Tag57D Tag57D_AccountWithInstitution_C
      {
        get
        {
          return this.AccountWithInstitution_C_57D;
        }
      }

      [Description("Beneficiary Institutions Account")]
      public Tag58B BeneficiaryInstitutionsAccount_C_58B
      {
        get
        {
          return new Tag58B((SwiftElement) this, 0, (SwiftDefinitionElement) MT256.U0002U0002);
        }
      }

      [Description("Beneficiary Institutions Account")]
      public Tag58B Tag58B_BeneficiaryInstitutionsAccount_C
      {
        get
        {
          return this.BeneficiaryInstitutionsAccount_C_58B;
        }
      }

      internal SequenceCClass(SwiftElement parent, int index, bool createTags)
        : base(parent, index, createTags)
      {
      }

      public class Tag57C : SwiftTagWrapper
      {
        public string Value
        {
          get
          {
            return this.GetValue();
          }
          set
          {
            this.SetValue("57C", value);
          }
        }

        internal Tag57C(SwiftElement parent, int index, SwiftDefinitionElement definition)
          : base(parent, index, definition)
        {
        }
      }
    }
  }
}
